/*Sample Input
2
1 2
112233445566778899 998877665544332211
 

Sample Output
Case 1:
1 + 2 = 3

Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
思路:大数的加法，采用字符数组的形式
挨个相加判断是否需要进位即可
*/
#include<stdio.h>
#include <string.h>
#define N 8000
int main()
{
	char str1[N],str2[N];
	int T;
	scanf("%d",&T);
	char A[N]={0},B[N]={0},sum[N]={0};		//字符串定义，清零
	int i,j=0,max;
	int len1,len2;
	for(i=1;i<=T;i++)
	{
		scanf("%s%s",str1,str2);
		len1=strlen(str1);
		len2=strlen(str2);
		//将字符型的数字转化成整型，并逆置
		for(j=0;j<len1;j++)
		{
			A[j] = str1[len1 - j - 1]-'0';
		}
		for(j=0;j<len2;j++)
		{
			B[j] = str2[len2 - j - 1]-'0';
		}
		//计算
		max=(len1>len2)?len1:len2;
		for(j=0;j<max;j++)
		{
			sum[j] = sum[j] + A[j] + B[j];
			//有进位
			if(sum[j]>=10)
			{
			    sum[j+1]+=sum[j]/10;
				sum[j]=sum[j]%10;

			}
		}
		//最高位有进位
		if(sum[j]>0)
		{

			max++;

		}
		//边输出边清零
		printf("Case %d:\n",i);
		for(j=len1-1;j>=0;j--)
		{
			printf("%d",A[j]);
			A[j] = 0;
		}
		printf(" + ");
		for(j=len2-1;j>=0;j--)
		{
			printf("%d",B[j]);
			B[j] = 0;
		}
		printf(" = ");
		for(j=max-1;j>=0;j--)
		{
			printf("%d",sum[j]);
			sum[j]=0;
		}
		printf("\n");
		if(i!=T){
            printf("\n");
		}
	}
	return 0;
}
